今天要介紹 Realm 的 CRUD ,也就是新增、讀取、修改、刪除的基本操作
延續昨天的,打開 .xcworkspace 檔,並 import RealmSwift
一開始會出現錯誤,因為專案還沒有讀取到 RealmSwift 的檔案,所以直接按 Command + B ,這樣錯誤就會消失
第一次的 Build 時間會比較久是正常的
完成後錯誤就消失了
新增物件檔,選擇 Cocoa Touch Class
Subclass of 輸入 Object
完成後再 import RealmSwift
再來輸入以下程式碼, classA 和 classB 就是 Data 物件的欄位
primary key 就是物件的主鍵,不能重複存在
UUID 是電腦自動生成的亂碼
回到 ViewController 輸入以下程式碼
class ViewController: UIViewController {
let realm = try! Realm()
override func viewDidLoad() {
super.viewDidLoad()
printDataBase()
}
@IBAction func createBtnClick(_ sender: UIButton) {
let result = Data()
// 填入欄位資料
// 像UUID及Date這種會自動生成的資料,在這裡可以不用給
// Optional 及有預設初始值的也不一定要給值
result.value = "Hi"
try! realm.write {
realm.add(result)
}
}
@IBAction func readBtnClick(_ sender: UIButton) {
printDataBase()
}
@IBAction func updateBtnClick(_ sender: UIButton) {
// 確認資料庫是有資料的
guard realm.objects(Data.self).count != 0 else { print("nil"); return }
let primaryKey = realm.objects(Data.self)[0].id // 指定資料庫的第零比資料
// 透過forPrimaryKey選擇需要改動的資料
let result = realm.object(ofType: Data.self, forPrimaryKey: primaryKey)
try! realm.write {
result?.value = "Bye"
}
}
@IBAction func deleteBtnClick(_ sender: UIButton) {
// 確認資料庫是有資料的
guard realm.objects(Data.self).count != 0 else { print("nil"); return }
let primaryKey = realm.objects(Data.self)[0].id // 指定資料庫的第零比資料
// 透過forPrimaryKey選擇需要改動的資料
let result = realm.object(ofType: Data.self, forPrimaryKey: primaryKey)
try! realm.write {
realm.delete(result!)
}
}
func printDataBase() {
// 確認資料庫是有資料的
guard realm.objects(Data.self).count != 0 else { print("nil"); return }
realm.objects(Data.self).forEach { (data) in
print("\(data.id) , \(data.value ?? "nil")")
}
print("=========================================")
}
}
我在頁面中加入了四個 Button 分別是新增、讀取、修改及刪除第一筆資料